
export function ajaxRequest(option) {
    let toString=(v)=>Object.prototype.toString.call(v).slice(8);
    if(! toString(option).startsWith("Object")) throw "need options Object";
    // 对参数容错处理
    option.method = option.method ? option.method.toUpperCase() : 'GET'; // 默认 GET 请求
    option = Object.assign({
        data:{},type:'text'
    },option);
    
    if(option.data instanceof Object){
        option.data = encodeFormString(option.data);
        console.log(option.data);
    }
    if(option.method === 'GET' && option.data.length > 0) {
        option.url += (option.url.indexOf("?")>=0 ? '&' : '?') + option.data ;
    }
    // 实例化 XMLHttpRequest 对象,并进行一些设置
    var xhr = new XMLHttpRequest();
    xhr.responseType = option.type;
    xhr.withCredentials = false;  //指示是否应使用Cookie或授权标头等凭据进行跨站点访问控制请求
    // 处理请求回调
    return new Promise((...handler)=>{
        xhr.onreadystatechange = function() {
            if(xhr.readyState === 4) {
                let _is=(xhr.status !== 200)*1;
                handler[_is]([xhr.response, xhr.statusText][_is]);
            }
        };
        xhr.open(option.method, option.url, true); // true 代表是异步请求
        // 如果是 POST 请求，需要设置请求头
        if (option.method === 'POST') {
          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        }
        // 发送请求
        xhr.send(option.method === 'POST' ? option.data : null);
    });
}

